home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / HAMRADIO / LOGBOOK.ZIP / REALTIME.PRG < prev    next >
Text File  |  1986-06-12  |  3KB  |  97 lines

  1. *REALTIME, GETS REAL TIME FROM CLOCK  (c) G3ZCZ 1986
  2. CALL dummy
  3. STORE PEEK(61455) TO min
  4. STORE PEEK(61456) + gmt TO hour
  5. IF hour > 0 .AND. hour < 24
  6.    STORE 0 TO fdate
  7. ELSE
  8.    IF hour < 0
  9.       STORE hour + 24 TO hour
  10.       STORE -1 TO fdate
  11.    ELSE
  12.       STORE hour - 24 TO hour
  13.       STORE 1 TO fdate
  14.    ENDIF
  15. ENDIF
  16. STORE ' ' TO ntime
  17. STORE STR(hour,2)+ STR(min,2) TO mtime
  18. STORE 1 TO cpointer
  19. DO WHILE cpointer < 5
  20.    IF $(mtime,cpointer,1) = ' '
  21.       STORE ntime +'0' TO ntime
  22.    ELSE
  23.       STORE ntime+$(mtime,cpointer,1) TO ntime
  24.    ENDIF
  25.    STORE cpointer+1 TO cpointer
  26. ENDDO
  27. STORE $(ntime,2) TO ntime
  28. IF &ntime < &otime
  29.    POKE 61440,180,42
  30.    SET CALL TO 61440
  31.    CALL dummy
  32.    STORE PEEK(61454) TO mm 
  33.    STORE PEEK(61456)*256+PEEK(61455)-1900 TO yy
  34.    STORE PEEK(61453) + fdate TO dd
  35.    IF dd > 0 .AND dd < 29
  36.       * DO NOTHING
  37.    ELSE
  38.       IF dd < 1
  39.          STORE mm - 1 TO mm
  40.          IF mm < 1
  41.             STORE mm + 12 TO mm
  42.             STORE yy - 1 TO yy
  43.          ENDIF
  44.          DO CASE
  45.             CASE mm = 2
  46.                  IF yy/4 = INT(yy/4)
  47.                     STORE 29 TO dd
  48.                  ELSE
  49.                     STORE 28 TO dd
  50.                  ENDIF
  51.             CASE mm = 4 .OR. mm = 6 .OR. mm = 9 .OR. mm = 11
  52.                  STORE 30 TO dd
  53.             OTHERWISE
  54.                  STORE 31 TO dd
  55.          ENDCASE
  56.       ENDIF
  57.       DO CASE
  58.          CASE mm = 2
  59.               IF yy/4 = INT(yy/4)
  60.                  IF dd > 29
  61.                     STORE dd - 29 TO dd
  62.                     STORE mm + 1 TO mm
  63.                  ENDIF
  64.               ELSE
  65.                  IF dd > 28
  66.                     STORE dd - 28 TO dd
  67.                     STORE mm + 1 TO mm
  68.                  ENDIF
  69.               ENDIF
  70.          CASE mm = 4 .OR. mm = 6 .OR. mm = 9 .OR. mm = 11
  71.               IF dd > 30
  72.                  STORE dd - 30 TO dd
  73.                  STORE mm + 1 TO mm
  74.               ENDIF
  75.          OTHERWISE
  76.               IF dd > 31
  77.                  STORE dd - 31 TO dd
  78.                  STORE mm + 1 TO mm
  79.               ENDIF
  80.       ENDCASE
  81.       IF mm > 12
  82.          STORE mm - 12 TO mm
  83.          STORE yy + 1 TO yy
  84.       ENDIF
  85.    ENDIF
  86.    STORE STR(yy,2)+"/"+STR(mm,2)+"/"+STR(dd,2) TO ndate
  87.    IF $(ndate,4,1) = ' '
  88.       STORE $(ndate,1,3)+'0' + $(ndate,5) TO ndate
  89.    ENDIF
  90.    IF $(ndate,7,1) = ' '
  91.       STORE $(ndate,1,6)+'0' + $(ndate,8) TO ndate
  92.    ENDIF
  93.    * RESTORE TIME SUBROUTINE
  94.    POKE 61440,180,44 
  95. ENDIF
  96. RETURN
  97.